Method, medium, and system for building a product finder

ABSTRACT

The principles set forth herein describe building a product finder. One aspect comprises receiving a request at a computing device to develop a product finder for a specified product category; receiving input at the computing device to configure the product finder, the input comprising data representing product information associated with the specified product category; developing, via a processor accessible by the computing device, the product finder based on an existing template, wherein developing the product finder based on the existing template reduces writing of computer code; and utilizing the input to customize the product finder. Other embodiments are disclosed herein.

RELATED APPLICATION DATA

This application is a continuation of U.S. application Ser. No.15/004,583 filed Jan. 22, 2016 which is a divisional of U.S. applicationSer. No. 13/442,952 filed Apr. 10, 2012, now U.S. Pat. No. 9,275,409,the disclosure of which is hereby incorporated by reference in itsentirety.

FIELD OF TECHNOLOGY

The present disclosure generally relates to building an online productfinder and, more particularly, to building a product finder accessibleon a website through a widget.

BACKGROUND

Purchasers of consumer electronics (CE), such as personal computers,digital media players, cellular phones, hard disk drives, and the like,want detailed information regarding product features and specificationsto aid them in making informed purchasing decisions. Manufacturerstypically provide such information for their products, but thisinformation may not be normalized between different manufacturers. Inaddition, some manufacturers may use proprietary names for the samefeatures in an attempt to differentiate themselves from the competition.For example, a manufacturer may call a display “qHD” instead of “960×540pixels,” which may be the more typical name in the industry. This canconfuse consumers as they are not likely to understand the difference,if any, between the various ways that manufacturers may describe similarfeatures.

Therefore, manufacturers could aid consumers in making purchasingdecisions by, inter alia, normalizing product information and presentingthe information to consumers in a consistent manner. However, it can bevery burdensome for each retailer to create its own database of productinformation. At any time, retailers may be offering hundreds orthousands of products, thereby making it highly expensive, or evenimpossible, to create a database of all product information. Inaddition, there is a very high turnover in the CE marketplace, asproducts are constantly being updated and replaced. Thus, productinformation databases must be revised constantly.

Furthermore, it can also be very burdensome for each retailer ormanufacturer to create its own storefront (e.g., an electronicstorefront on a retailer or manufacturer website), for example, toprovide product information and retail functions. A retailer ormanufacturer will likely need to devote a large amount of time and/orresources to develop a fully functional electronic storefront. Inaddition, after an electronic storefront has been established, morecosts may be required to sustain functionality. For example, any productinformation provided by the storefront must be maintained and updated.Moreover, consumers require certain functions, such as a search functionallowing customers to browse through products. Thus, a retailer ormanufacturer may need to spend significant time, effort, and resourcesto provide adequate electronic storefront functionality, such as asearch function.

SUMMARY

Additional features and advantages of the embodiments disclosed hereinare set forth in the description which follows, and in part will beobvious from the description, or may be learned by practice of thedescribed technologies. The features and advantages of the embodimentsmay be realized and obtained by means of the instruments andcombinations particularly pointed out in the appended claims. These andother features of the disclosed embodiments will become more fullyapparent from the following description and appended claims, or may belearned by the practice of the disclosed concepts as set forth herein.

Disclosed are systems, methods, devices, and computer-readable storagemedia for an electronic storefront configured to present productinformation in substantially real-time. Embodiments may also be at leastpartly implemented as instructions contained in or on a non-transitorycomputer-readable medium, which may be read and executed by one or moreprocessor circuits to enable performance of the operations describedherein. An electronic storefront as disclosed herein may be providedthrough a website, which may include a widget that provides data, suchas product information, through the electronic storefront insubstantially real-time. For example, a website developer may beprovided with a snippet of computer code for generating a JavaScript®hook or widget, thereby obviating the need for the developer to producecustomized computer code for the an electronic storefront, which canpotentially save time and money. JavaScript® is a registered trademarkof Oracle America, Inc. The electronic storefront widget may bedisplayed in substantially real-time to a visitor of a webpage when avisitor interacts with a product display object, for example, by placingor rolling a mouse pointer over text containing a product name of acertain product, such as a consumer electronic (CE) product. The widgetmay retrieve from an external product reference resource, such as aserver and/or database, data relating to product information for one ormore products. The retrieved data may be displayed to a web site visitorin substantially real-time via the storefront widget.

The storefront widget may include a mash-up of other services,including, but not limited to, a mapping feature and a shopping feature.The storefront widget may include a group of widgets (e.g., widgetswithin the widget). A store widget and a map widget may combine andcollaborate together within the storefront widget. Accordingly, thestorefront widget may show product location and availability via the mapfeature or map widget while allowing customers to browse products andmake purchases via the store widget.

As disclosed herein, products may include CE products, such astelevisions (TVs) (e.g., high definition TVs (HDTVs)), DVD players, cellphones (e.g., smartphones), computing devices (e.g., laptops, personalcomputers (PCs), tablet computing devices), cameras, audio recording andplaying devices, and the like. Data relating to product information mayinclude brand name, manufacturer, product name, model type/number,product description, price, product reviews, user/consumer reviews,features, dimensions, and product availability and location(s) (e.g.,addresses of retail stores with product currently in stock). Productsmay additionally include media products such as music, movies, books,and TV shows. For example, an electronic storefront widget as disclosedherein may be displayed on a webpage where media is mentioned (e.g., ablogger on a blog site may publish content about his favorite book, aperson on a social networking site may post a movie title, or a web usermay update a status message to reflect a song he is listening to at themoment). As such, an electronic storefront widget may be displayed forvarious media products as a person browsing these sites (i.e., potentialconsumer) places a mouse pointer over them. The electronic storefrontwidgets may be configured to provide the full product name (e.g.,title), author, director, producer, editor, cast, a sample media clip,excerpt or abstract, price, and other information about the mediaproduct. In addition, electronic storefront widgets may incorporateclickable button(s) for convenient shopping (e.g., “Purchase,” “Bid,”“Add to cart,” “Process”).

A webpage may include a video displaying product(s). A widget may bedisplayed to a visitor of a webpage to provide information and datarelating to the product(s) in the video. For example, if the video hasbeen tagged with one or more keywords, such as “Brand Name Camera ModelXYZ,” then the electronic storefront widget may be made available to thevisitor to display product information about the camera (e.g., when thevisitor places a mouse pointer over the product shown in the video, orwhen the visitor moves a mouse pointer over the video tag/keyword).Similarly, if the video properties state which camera was used to recordthe video, then the widget may also display product information aboutthat camera to the visitor. In addition, if the video descriptionmentions the camera, the widget may display product information aboutthat particular camera.

Webpages often present audio mentioning or promoting certain product(s).A widget may be displayed to a visitor of the webpage to provideinformation and data relating to the product(s) mentioned in the audio.For example, if the audio has been tagged with one or more keywords,such as “Brand Name Microphone Model XYZ,” then the widget may be madeavailable to the visitor to display product information about themicrophone. Similarly, if the audio properties or description mentionsthe microphone, then the widget may also display product informationabout the microphone to the visitor. In addition, speech-to-textsoftware may be used to decipher the audio into text. If the audioand/or text mention the microphone, the widget may display informationabout it.

A webpage may present an image depicting product(s). For example, theimage may have a description or tags describing or associated with theproduct(s). Any products mentioned may be provided by a widget asdescribed herein. In addition, a person's face displayed in an imageprovided on the webpage can be deciphered using facial recognitionsoftware. The person can be an author, singer, actor, or athleteassociated with one or more products, including media products. Mediaand other products associated with the person may be provided by thewidget. Similarly, any other products (e.g., a particular digitalcamera) recognized in the image may also be provided by the widget.

Webpages may additionally present or link to a game which may includereal and/or virtual products. For example, in a Role Playing Game (RPG),a real or virtual item may be presented as a product via a widget, or,in a racing game, a car within the game may be presented as a productvia a widget. Moreover, the game may utilize real or virtual currencyfor shopping. As such, widgets as disclosed herein may provide astorefront for using real and/or virtual currency.

A webpage may present a restaurant or other business, such as a retailbusiness. A widget may be configured on the webpage to provide mealvouchers, coupons, tickets, or any other merchandise/products mentionedor associated with the restaurant or other business.

External product reference resources as described herein may aggregaterequest data from the widget. Such data may include product data, and,in aggregate, may indicate consumer interest in a product. In addition,the widget may also return data useful in building a profile regarding auser, including demographic data, user identification data, behavioraldata, and the like. Furthermore, the external product reference resourcemay also aggregate purchase data based on products purchased through oneor more interfaces provided by the widget.

Also described herein are processes and products configured to developsearch functionality to find products. A client (e.g., websiteowner/developer, online retailer) may request a product finder builderto develop a product finder. For example, the client may submit input,such as product information relating to a product and/or productcategory, specifying for the focus of the product finder. The productfinder builder may, for example, develop a product finder from anexisting template, wherein the client's input may be used to customizethe product finder. The product finder and/or the product finder buildermay be presented as a widget on a web site.

The developed product finder may provide a genus-level specificationsheet with active labels for specification values that allow an end user(e.g., online customer, webpage viewer) to narrow items from genus tospecies (e.g., to find a particular product model). The product findermay additionally allow an end user to browse from a general level to amore specific level. The developed product finder may also provide(e.g., via buttons, hyperlinks, sliding buttons) interactive generalproduct characteristics which may lead to narrower productcharacteristics. Such features may ultimately guide a user to moreeffectively and efficiently find products matching one or more searchcriteria.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to best describe the manner in which the above-describedembodiments are implemented, as well as define other advantages andfeatures, a more particular description is provided below and isillustrated in the appended drawings. Understanding that these drawingsdepict only exemplary embodiments and are not therefore to be consideredto be limiting in scope, the examples will be described and explainedwith additional specificity and detail through the use of theaccompanying drawings in which:

FIG. 1 illustrates a prior art storefront providing product informationon a generic webpage;

FIG. 2 illustrates an exemplary embodiment including a widget used on awebsite for accessing the product information of FIG. 1 and providing astorefront;

FIG. 3 illustrates an exemplary embodiment including a more customizedwidget for accessing product information and providing a storefront on awebsite;

FIG. 4 illustrates an exemplary embodiment including a widget forproviding a storefront and displaying product information;

FIG. 5 illustrates an exemplary embodiment including a storefront widgetcommunicating with a remote server(s);

FIG. 6 illustrates an exemplary embodiment including a widget forproviding a storefront and displaying product information encompassingproduct availability and locations;

FIG. 7 illustrates an exemplary embodiment including a storefront widgetcommunicating with a mapping feature;

FIG. 8 illustrates an exemplary method embodiment for facilitating awidget to provide a storefront on a website to display productinformation in real-time;

FIG. 9 illustrates an exemplary method embodiment for providing astorefront on a website to display product information in real-time viaa widget;

FIG. 10 illustrates an exemplary system embodiment for serving productinformation to a web server;

FIG. 11 illustrates an exemplary product finder configured to provideproduct information based on a search query;

FIG. 12 illustrates an exemplary product finder providing productinformation resulting from a search query;

FIG. 13 illustrates an exemplary method embodiment for building aproduct finder;

FIG. 14 illustrates an exemplary system embodiment for a product finderbuilder;

FIG. 15 illustrates an exemplary system embodiment for a product finderbuilder communicating with a product information database;

FIG. 16 illustrates an exemplary embodiment including a widget foraccessing a product finder;

FIG. 17 illustrates an exemplary embodiment including a widget foraccessing a product finder having retrieved results from a search query;and

FIG. 18 illustrates an exemplary system, including a general-purposecomputing device.

DETAILED DESCRIPTION

Various embodiments are discussed in detail below. While specificembodiments are discussed herein, it should be understood that this isdone for illustrative purposes only. A person skilled in the relevantart will recognize that other embodiments, implementations, variations,steps, and/or orders of steps may be used without departing from thespirit and scope of the disclosed embodiments.

Electronic commerce (“e-commerce”) encompasses the buying and selling ofproducts and services (referred to herein collectively as “products”)over electronic systems such as the Internet and other computernetworks. E-commerce typically uses the World Wide Web at least at somepoint in the transaction's lifecycle, although it can encompass a widerrange of technologies, such as e-mail based commerce, procuredapplication marketplaces, electronic provision of services, and soforth. E-commerce sellers (e.g., original equipment manufacturers(OEMs), retailers, resellers, distributors) typically have a need fordetailed product information (e.g., specifications, OEM marketingdescriptions, product images, product search, product comparison,product configuration, and identification/configuration of productaccessories and related products) to support interactions withconsumers. In addition to product information, other information, suchas promotional information (e.g., rebates, coupons, and sweepstakes) canbe included with the product information or sent in response to aseparate query.

FIG. 1 illustrates how an electronic storefront providing productinformation may be presented via HTML code using a generic template 100on a typical webpage. The example format includes: a title 110; aproduct image 120; a short description or overview 130 of the product; amarketing description (typically from the product OEM) 140; and a mainproduct specification 150, which includes features 152, dimensions 154,resolution 156, and display format 158, which can be uniformlyassociated with consumer (CE) products. Other common product informationis illustrated by FIG. 1, but is not listed here for brevity.

The product information of FIG. 1 may be retrieved from a local orcloud-based database. In this example, the data is formatted using codeintegrated in the webpage. Providing custom code to retrieve and formatdata on a website can be time consuming, error-prone, and costly. Eachuser of the database provides custom code to retrieve and format thedisplayed product information, which results in duplication of work andincreased costs. Furthermore, since there is little or nostandardization for product information across the broad range of OEMs,retailers, and resellers, obtaining accurate information sufficient tosupport such consumer interactions can be resource-intensive anddifficult to achieve.

Embodiments set forth herein may be used with services that collectproduct information from multiple sources, normalize the collectedproduct information in a standard format, store the normalized productinformation in a structured data repository, such as a productinformation database, and provide an interface for clients such ase-commerce sellers. In other words, embodiments may operate tofacilitate a vendor in obtaining normalized product information tosupport interactions with consumers, both by normalizing productinformation and/or accessing normalized product information fromexternal sources. The CNET® Content Solutions DataSource™ productinformation service is an example of such a normalized informationsystem. CNET® and DataSource™ are trademarks or registered trademarks ofCBS Interactive Inc. The CNET® Content Solutions DataSource™ systemprovides normalized information on consumer electronics that can be usedby online retailers such as Best Buy®. Best Buy® is a registeredtrademark of BBY Solutions, Inc. A client (e.g., an e-commerce seller)may provide product identification data (e.g., product title, productOEM, product OEM part number) as input to such product informationservices. As an initial task to providing normalized productinformation, requests may be mapped to appropriate entries in the storednormalized product information, for example, product informationdatabases and indexes thereof.

Embodiments may also present normalized product information in a widgetinstead of providing custom code to format the product information. In anon-limiting example, the widget may be generated by the host of theproduct information, and integrated into any webpage, thereby obviatingthe need for the e-commerce vendor to format the product information.Therefore, each e-commerce vendor that uses the product informationservice may simply integrate the widget into their website without theneed to generate custom code to retrieve and format product information.

Integration of a widget into a website does not generally requirebackend server integration. For example, a JavaScript® hook may beplaced on a webpage. An exemplary JavaScript® widget may be a script tagthat takes parameters and returns JavaScript® that dynamically addscontent to a web page. For example, a website developer may put asnippet of code, such as the following, to generate a widget for hiswebpage:

-   -   <script        type=“text/javascript”language=“javascript”src=“finder/finder.nocache.js?account=demo-ja&finderType=tv&hostName=stage-finders.cnetcontentsolutions.com&protocol=http&port=80&container=ccFinderDiv”></script>

FIG. 2 illustrates the product information of FIG. 1, but with theproduct information presented in widget 200 configured according toembodiments, instead of being rendered directly by the source code ofthe webpage. The information displayed on the webpage may be similar, ifnot identical, to the information in generic template 100 of FIG. 1;however, using a widget 200 instead provides advantages as enumeratedherein. For example, instead of using generic template 100, a moreseamless and cost-effective presentation may be affected by the widget200 that does not require complete web-site customization.

FIG. 3 shows an exemplary embodiment including a product and/or userreviews widget on a website. Webpage 300 includes widget 301, which mayinclude a preconfigured template for displaying information in acustomized fashion. The preconfigured template for widget 301 may beconfigured by the vendor of the product identification data based oninstructions from a client (e.g., website owner). In this manner, widget301 may present information in a seamless fashion such that the productidentification information has an integrated look and feel as to notappear generic, which can give webpage 300 a professional appearance.Much of the same information displayed in widget 200 may also bedisplayed in widget 301 of FIG. 3, albeit the information may bedisplayed differently. The widget 301 may present product informationsuch as product reviews (e.g., by a third party reviewer) and/or userreviews (e.g., by consumers), as illustrated in FIG. 3.

FIG. 4 illustrates an exemplary embodiment including a widget forproviding an electronic storefront and displaying product information. Awebsite developer may access a snippet of computer code, such asJavaScript®, to generate a widget on the developer's website, asillustrated in FIG. 4. A user or viewer of the website (e.g., potentialconsumer) may browse the website 402 and place or move a mouse pointer404 over a product 406. When the mouse pointer 404 is placing over aproduct 406 (e.g., during a mouse rollover), a widget 410 mayautomatically be displayed to the user. The widget 410 may communicatewith one or more remote databases to retrieve and display variousinformation and data about the product, such as the brand name 412(i.e., manufacturer), the product name/type 414, the model 416, theprice 418, an overview 420 of the product, a product description 422,features 424, technical specifications 426, product reviews 428 (e.g.,reviews submitted by the website, a third party, a server hosting theremote database), user reviews 430, product availability and locations432, and other information.

As shown in FIG. 4, the widget 410 may provide buttons 434 forinteracting with the product, such as purchasing the product (e.g., “Addto Cart,” “Buy Now,” “Purchase,” “Checkout” buttons). As such, thewidget 410 may serve as an electronic storefront for the website.Furthermore, the widget 410 may provide additional information byincluding other widgets, including, but not limited to, a product datawidget, a shopping cart widget, a purchase widget, and combinationsthereof. An illustrative and non-restrictive example provides that theinformation and data relating to the product may be retrieved by theproduct data widget from a remote database/server, and the shopping cartand purchase widgets may communicate with the same or a different remoteserver (e.g., customer store service with retailer/prices catalog) tocarry out shopping related tasks.

A widget 410 may be used with a product finder. The product finder mayautomatically find products (e.g., 406, 408) on a webpage. An anchor canbe created for each of these products. Information about these productsmay then be retrieved from a remote database by the widget 410 to bedisplayed on the webpage to a viewer of the webpage. As the viewerplaces a mouse pointer over each product on the webpage, a widget may bedisplayed providing view information relating to the respective productas well as processes for purchasing the product. Thus, a widget mayserve as an electronic storefront for any website, thereby obviating theneed for the website to implement its own product database and/orelectronic storefront.

Referring to FIG. 5, therein is provided an exemplary embodimentincluding a storefront widget communicating with a remote server. Thestorefront widget 504 may reside on a webpage 502 and may include otherwidgets (e.g., widgets within a widget). For example, the widget 504 mayinclude another widget 506 to create an anchor for each product on thewebpage (e.g., an anchor can be created from the website text naming theproduct). There may also be a widget 508 for accessing product data.These widgets 506 and 508 may communicate with a remote database 514storing product data to carry out their tasks. Moreover, a shopping cartwidget 510 and/or a purchase widget 512 may handle shopping tasks. Thesewidgets 510 and 512 may communicate with a remote server 516, which may,for example, utilize a retail/price catalog 518 to serve retailer andpricing information. In one embodiment, information in the retail/pricecatalog 518 may be continually refreshed and re-indexed according toinformation stored in vendor databases used as a data source for theretail/price catalog 518. For example, if a vendor does not carry aparticular product (e.g., plasma HDTVs), then that product and anyassociated features may be hidden on a storefront widget 504. The remotedatabase 514 and remote server 516 may be separate (e.g., two separateservers), function together (e.g., one server), operate as a singleentity or multiple separate entities, or some combination thereof.Although certain widgets 506, 508, 510, 512 have been illustrated in theexemplary embodiment shown in FIG. 5, embodiments are not so limited, asany widget capable of functioning within the storefront widget 504 iscontemplated herein.

According to embodiments, a widget 610 may be used with a mappingfeature or other service providing product location and/or availability,as shown in the exemplary embodiment of FIG. 6. If a consumer (e.g.,website viewer) wants to purchase the product in person at a physicallocation, or if the consumer wants to check out the product in person,the widget 610 may retrieve product availability and/or locationinformation from a remote server to display such information to theconsumer. For example, the widget 610 may request the consumer to inputa zip code and/or address information 612, including partial addressinformation (e.g., city and state). Based on the zip code or addressinput 612, the widget may communicate with the remote server and/or amapping service to retrieve information regarding where the product isavailable near that zip code or address. The widget may display wherethe product can be found on a map 614 encompassing the zip code oraddress. The places where the product should be available may be marked(e.g., stores A, B, and C are marked with stars 616, 618, and 620,respectively). The widget may provide more information, for example,through buttons 622 configured to provide additional information, suchas store hours, store addresses, directions, store contact information,and the like. For example, the widget may be a mash-up of an onlinestore (i.e., store widget) and a mapping feature (i.e., map widget,mapping service).

Referring to FIG. 7, an exemplary embodiment including a storefrontwidget communicating with a mapping service is shown. The storefrontwidget 704 may reside on a webpage 702 and may include variouscomponents. For example, the widget 704 may include a mapping servicegeocoding Application Programming Interface (API) 706, which can beuseful for finding the street address of a store. The widget may alsoinclude a mapping service JavaScript® API 708, which may be used toembed a map or mapping features within the storefront widget 704. TheseAPIs 706, 708 may communicate with the mapping service 712 to carry outtheir mapping tasks. Moreover, the widget 704 may include aretailer/product API 710, which may be useful for retrieving retailerand/or product information from a remote database/server 714. The remoteserver 714 may communicate with a retailer/prices catalog 716 forretailer and/or pricing information. The mapping service 712, remotedatabase 714, and catalog 716 may be hosted on a single entity (e.g.,one remote server) or on separate entities (e.g., multiple remoteservers).

FIG. 8 illustrates an exemplary method embodiment for facilitating awidget to provide a storefront on a website with product information fordisplay in substantially real-time. The method embodiment includesstoring data relating to product information on a remote database 804.For example, a remote server may host a database that stores normalizedproduct information, such as consumer electronic product data,manufacturer marketing content, and parametrically searchable productspecifications. A remote server/database may receive a request from awidget on a website for data relating to product information for acertain product(s) 806. The remote server/database may check whether ithas the requested data 808. If the remote server/database does not havethe requested data 808, the method may terminate. Otherwise, if theremote server/database has the requested data 808, the remoteserver/database may communicate with the widget to transmit therequested data relating to product information such that the widget may,in substantially real-time, provide a storefront and display the data810.

FIG. 9 illustrates an exemplary method embodiment for providing astorefront on a website displaying product information in substantiallyreal-time via a widget. The exemplary method embodiment includesreceiving a request for product information for a certain product(s)904, such as a website (or a widget on a website) receiving a requestfor product information for a certain product. For example, a visitor ofa webpage may seek access to product information for a certain productand, accordingly, may place a mouse pointer over the product name on thewebpage. As such, the request to access data relating to productinformation may be received by the webpage (or widget on the webpage).The widget may be configured to communicate with a remote database 906in an attempt to retrieve the requested information. If the remotedatabase does not have the requested data 908, the method may end;otherwise, if the remote database has the requested data 908, then thewidget may retrieve the data for display 910. The widget and theretrieved data may be displayed in substantially real-time 912. Thewidget may present an electronic storefront displaying the retrieveddata and/or a button(s) providing convenient shopping functions (e.g.,“Add to Wish list,” “Buy,” “Checkout”) 914.

FIG. 10 illustrates an exemplary system embodiment for serving productinformation to a web server. FIG. 10 shows a system 1000 comprising aserver 1005, which may host an e-commerce website. On the backend 1016,there may be a data collection function 1006, customer accounts 1007,customer preferences 1008, and content connector 1009. Content connector1009 may normalize product information received from vendors (e.g., as afile, such as download.zip) and may export the normalized productinformation into a database, such as a MySQL database 1003. A datacollection function 1006 may be used to denormalize data, for example,by storing the information in a custom fashion, from the MySQL database1003, and storing the data in a system database 1002. Customer accounts1007 may store customer information such as addresses, paymenthistories, and subscription levels as well as a set of attributes forconfiguring a widget 1030. According to embodiments, the set ofattributes may include information pertaining to headers, footers,cascading style sheets (CSS), width, categories, questions, buttons, andinclusion or exclusion of content (e.g., buyer guide). Customerpreferences 1008 may store certain customer preference information, suchas which product information to send when a query is received orinformation pertaining to how the data should be presented. The customerpreferences 1008 may be configured when the customer sets up an accountwith datasheet service 1001.

A datasheet service 1001 may include a group of services 1015 forinterfacing the backend 1016 with the servlet 1017. For example, FIG. 10illustrates a metamap service 1010, which may map product identifiersreceived from server 1005 with product information stored in systemdatabase 1002 and MySQL database 1003. Product service 1011 may deliverbasic product information such as brief product descriptions. Specservice 1012 (i.e., specifications service) may deliver detailed productspecifications. Account service 1013 may give an e-commerce websiteadministrator access to their datasheet service account tracked incustomer accounts 1007. Image service 1014 may provide an imageassociated with the product identifier, for example, as received fromeither a browser 1004 or a web server 1005.

Servlet 1017, as illustrated in FIG. 10, may be implemented, forexample, in Java™ to provide a request-response interface with, on oneside, browser 1004 and web server 1005, and on the other side, services1015. Servlet 1017 may include a template engine 1018, authenticationmodule 1019, authorization module 1020, and model 1021. Template engine1018 may format product information into one or more website developmentlanguages, including, but not limited to, extensible markup language(XML), hypertext markup language (HTML), such as HTML 5, or JavaScript®object notation (JSON) templates, for insertion into a widget in browser1004. Authentication module 1019 may authenticate server 1005 todetermine whether the server 1005 is bona fide by, for example, using asecurity certificate or secure token passed along with a request forproduct information. Authorization module 1020 may determine whetherserver 1005 has access to particular features of datasheet service 1001as allowed per a contract between the hosted datasheets provider and theadministrator of server 1005. Authorization module 1019 may includeaccess to several services such as the following: a base product servicethat may include a basic product title and summary; a product imagesservice that may include one or more images of the product; a productspec service that may include detailed product features andspecifications; and a related products service that may suggestcomplementary or similar products with slightly different features orprices.

These different services may be offered in different combinationsdepending on the needs and cost considerations of each particulare-commerce website. In addition, the base product service may be brokenup into different catalogs, for example, based on product type (e.g.,laptops, cameras, TVs). Breaking out products into catalogs may allowfurther diversity of prices and for more e-commerce websites to tailortheir use of hosted datasheets service 1001 to their particular needs.In addition, servlet 1017 may include model 1021, which may includeobjects in a domain model 1021 c, along with JavaBeans™, which aregenerally reusable software components for Java™. Java™ and JavaBeans™are trademarks or registered trademarks of Sun Microsystems, Inc. Model1021 may utilize JavaBeans™, for example, to provide requests and/oraccept responses (e.g., request beans 1021 a, response beans 1021 b).

Datasheet service 1001 may be customized to one or more particular needsof an e-commerce website. Different levels of service may be establishedin customer accounts 1007, as discussed above. In addition, preferencesmay be set in, for example, customer preferences 1008. Preferences mayinclude customization, such as color and formatting customizations, ofthe template used by a template engine 1018, number of pages in atemplate, an overview, specifications, accessories, product and/orcustomer reviews, and learning features (e.g., glossaries, guides, andmanuals). Customizations may be established by an e-commerce websitewhen an account is established, which can be done over the Internet orover the phone.

In one example of a transaction between browser 1004, server 1005 anddatasheet service 1001, browser 1004 may access a website hosted byserver 1005. Browser 1004 may send a query to server 1005 for a product,such as a TV. The server 1005 may identify a group of TVs matching thequery. Each identified TV may have an associated product identifier, ormay be identified by metadata, which the widget 1030 may use, interalia, to generate queries to datasheet service 1001. The queries mayinclude parameters stating information needed to respond to the query.Only limited information, such as name, picture, and screen size, may beneeded, for example, because a list of TVs will be sent to browser 1004,which has limited area to display information. Moreover, the user ofbrowser 1004 might only want limited information on each product at thistime because the user may seek to quickly review several TVs to find onefor further inspection. However, more or less information may beprovided. Queries from widget1030 may be received by servlet 1017, whichmay authenticate server 1005, and determine what level of service theserver 1005 is authorized to access. The query may be further processedby request beans 1021 a to generate a request to services 1015. Services1015 may then query a database, which in the example of FIG. 10, issystem database 1002. Product information in system database 1002 may beformatted according to specifications configured in backend 1016. If therequested data is not yet in system database 1002, it may be retrievedfrom MySQL database 1003, and denormalized by data collection module1006, before being stored into system database 1002 and returned toservices 1015. Services 1015 may return a response bean to model 1021.Finally, template engine 1018 may format product information receivedfrom the response bean into an XML, HTML or JSON widget, which may besent to server 1005 and forwarded to browser 1004, or the productinformation may be sent directly to browser 1004 for display in a widget1030. As such, the widget 1030 may present the product information andprovide an electronic storefront in real-time.

Utilizing the embodiments described herein, and exemplified in FIG. 10,e-commerce sellers may have access to a very complete database ofproduct information that would otherwise be cost prohibitive to buildand maintain. Embodiments may also provide maintenance and updating ofthe product information database, seamless integration into e-commercewebsites such that the product information appears to be coming from thee-commerce seller's own website. Also, services may be added or removedas required by specific e-commerce seller's needs, thereby allowing forseparate service levels.

Other embodiments may include collecting user reviews and storing theminto a database, such as a MySQL database 1003. Social media informationabout a person's social circle may be gathered from social medianetworks. The social media information may be used to determine whetherfriends of the person have reviewed or commented on a product; reviewsfrom friends may be more prominently displayed in customer reviewsbecause they may be more relevant.

Queries may be formed using any database or programming language. Thefollowing example illustrates a query using JavaScript®:

<script src=“http://hosteddatasheets.com/datasheet?h=CUSTID&view=html&mf =MANUFACTURER&pn=PROCUCT_ID&locale=LOCALE_CODE&acc=yes”type=“text/javascript” defer=“defer”async=“true”></script>The query uses the HTML <script> tag, and the ‘src’ parameter defines aquery that, in this example, is sent to an exemplary data sheet hostingweb site (i.e., http://hosteddatasheets.com). The query above hasseveral parameters, including the h, view, mf, pn, locale, and accparameters. Among these parameters, there may be a “type” parameter,which allows a query to identify the type of product information that isrequested (e.g., image or datasheet).

Products may include CE products, such as televisions (TVs) (e.g., highdefinition TVs (HDTVs)), DVD players, cell phones (e.g., smartphones),computing devices (e.g., laptops, personal computers (PCs), tabletcomputing devices), cameras, audio recording and playing devices, andthe like. Products may additionally include media products such asmusic, movies, books, and TV shows. For example, a widget may bedisplayed on a webpage where media is mentioned (e.g., a blogger on ablog site may publish content about his favorite book, a person on asocial networking site may post a movie title, or a web user may updatea status message to reflect a song he is listening to at the moment). Assuch, a widget may be displayed for various media products as a personbrowsing these sites (i.e., potential consumer) places a mouse pointerover them. The widgets may be configured to provide the full productname (e.g., title), author, director, producer, editor, cast, a samplemedia clip, excerpt, or abstract, price, and other information about themedia product. In addition, widgets may provide clickable button(s) forinteracting with the product (e.g., shopping functions such as“Purchase,” “Bid,” “Add to cart,” “Process”).

A webpage may display a video containing one or more products. A widgetmay be displayed to a visitor of a webpage to provide information anddata relating to the one or more products in the video. For example, ifthe video has been tagged with one or more keywords, such as “Brand NameCamera Model XYZ,” then the widget may be made available to the visitorto display product information about the camera (e.g., when the visitormoves a mouse pointer over the product shown in the video, when thevisitor moves a mouse pointer over the video tag/keyword). Similarly, ifthe video properties state which camera was used to record the video,then the widget may also display product information about the camera tothe visitor. In addition, if the video description mentions the camera,the widget may display product information about that particular camera.

A webpage may present audio mentioning products. A widget may bedisplayed to a visitor of the webpage to provide information and datarelating to the products mentioned in the audio. For example, if theaudio has been tagged with one or more keywords, such as “Brand NameMicrophone Model XYZ,” then the widget may be made available to thevisitor to display product information about the microphone. Similarly,if the audio properties or description mentions the microphone, then thewidget may also display product information about the microphone to thevisitor. In addition, speech-to-text software may be used to decipherthe audio into text. If the audio and/or text mention the microphone,the widget may display information about it.

A webpage may present an image depicting one or more products. Forexample, the image may have a description or tags describing orassociated with the one or more products. Any products mentioned may beprovided by a storefront widget. A person's face displayed in an imageprovided on the webpage can be deciphered using facial recognitionsoftware. The person can be an author, singer, actor, or athleteassociated with one or more products, including media products. Mediaand other products associated with the person may be provided by thewidget. Similarly, any other products recognized in the image mayadditionally be provided by the widget.

A webpage may present or link to a game. In the game, there can be anynumber of real or virtual products. For example, in a Role Playing Game(RPG), a real or virtual item may be presented as a product via awidget, or, in a racing game, a car within the game may be presented asa product via a widget. Moreover, the game may utilize real or virtualcurrency for shopping. As such, a widget may provide a storefront forusing real and/or virtual currency.

A webpage may present a restaurant or other business, such as a retailbusiness. A widget on the webpage may provide meal vouchers, coupons,tickets, or any other merchandise/products mentioned or associated withthe restaurant or other business.

A widget may be comprised of a JavaScript® hook, such as a scriptelement. A widget may be generated from computer code includingJavaScript®, jQuery, HTML, HTML5, or any combination of these and/orother programming languages.

A widget may disappear when the mouse pointer is no longer placing overthe product (e.g., over the predefined webpage area representing theproduct) and/or there may be a “Close” button to close the widget.

A remote database may be hosted on a remote server. The remote databaseand remote server may be separate or completely or partially integrated.A web server may be a server on which a website is hosted. A web servermay be a server connected to the World Wide Web (e.g., the Internet).The system database may implement a database management system, such asan Apache Cassandra™ database management system. Apache Cassandra™ is atrademark of the Apache Software Foundation.

A remote server may aggregate data, such as data collected from awebsite (or a widget on a website). For example, as a webpage visitorplaces a mouse pointer over a product, data in the form of a request maybe transmitted to a remote server. The fact that a visitor is placing amouse pointer over a certain product may be useful data for research,statistics, marketing, sales, and other purposes. In addition, if thevisitor decides to purchase a product, the fact that the visitor madethe purchase may be useful data as well. For example, the remote servermay aggregate data to determine and/or predict which products willlikely be of interest to which potential consumers.

The data aggregation may be “passive” with respect to the website,widget on the website, or visitor of the website, in that there need notbe any extra processing for the web site in order to transmit the data.For example, if a webpage visitor is already placing a mouse pointerover a product or has already initiated a function associated with theproduct (e.g. purchase, bid, add to cart, etc.), then the remote servermay receive one or more requests, such as a request for productinformation or a request to process the order. Since the remote serverwill receive these requests anyway, it can collect data about theserequests, whereas the webpage, widget, or visitor need not incuradditional processing. As mentioned above, the collected data can beuseful for multiple purposes, including research, statistics, marketing,and sales.

FIG. 11 illustrates an exemplary product finder configured to provideproduct information based on a search query according to an embodiment.As shown in FIG. 11, the product finder 1102 may be configured to findtelevisions; however embodiments are not so limited, as the productfinder 1102 may be configured to find any type of product, including butnot limited to CEs, airfare, hotel rooms, automobiles, books, software,restaurants, and so forth. The product finder widget may change the setof attributes displayed and/or the range of possible attributes based onthe product type. For example, the product finder widget may query adatabase on a server hosting the product finder widget, a databaseresiding on a server hosting the product finder builder, or some otherrepository to determine the attributes. Alternatively, the productfinder builder may statically incorporate the set of attributes withinthe product finder widget for a particular product category or customer.The product finder 1102 may be implemented on a generic webpage 1100 asshown in FIG. 11. The product finder 1102 may allow an end user of theproduct finder (e.g., a customer or a webpage visitor) to select a pricerange 1104 for one or more televisions of interest. There may also be aselectable range for screen size 1106. In addition, there may be manyother product information details 1108 available for selection by auser. In response to the user selection of the product informationdetails 1108, the product finder 1102 may find and provide only thoseproducts that match the user's selections. At any time, the user mayclear all selections and start over (e.g., via a “Start Over” button1110). To perform a search, the user may input selection(s), execute thesearch and retrieve (e.g., via the “Display Results” button 1112) thosetelevisions that match the search query (i.e., search criteria asindicated by user selection(s)).

FIG. 12 illustrates an exemplary product finder providing productinformation resulting from a search query. The product finder 1202 maybe hosted on a generic website 1200. The product finder 1202 may displayproduct(s) 1206, 1208, 1210 and the respective product information 1212,1214, 1216 resulting from a user's selection input 1204. A sortingfunction 1218 may sort products based on certain criteria, such aspopularity, price, ratings, and the like. The user may also choose tocompare (e.g., via a “Compare” button 1220) a number of products andproduct information resulting from the query.

The product finder may display general product attributes and propertiesbefore allowing the end user to navigate to more specific productattributes. The product finder may provide interactive buttons (e.g.,sliding buttons to define range, hyperlinks) to allow the end user toselectively find products of interest. The product finder may have agenus-level specification sheet with active labels for specificationvalues that allow narrowing from genus to species (e.g., narrowing tofind a particular model).

For example, in the case of television products, the product finder maydisplay to an online shopper a general specification page statinggeneral attributes, such as “High Definition,” “LCD,” and “Plasma.”These attributes may include hyperlinks such that when the end userclicks on them, more specific attributes may be displayed. For example,if the end user clicked on “High Definition,” more specific attributessuch as “720i, ” “720p, ” “1080i, ” and “1080p” may be displayed.Similarly, these more specific attributes may be hyperlinks and/or otherinteractive buttons and may lead to even more specific attributes, andso forth. Eventually, only those products that match the chosenattributes may be displayed to the end user. As such, the end user mayfilter through products from a general level of product characteristicsdown to a more narrow level, to ultimately find particular products ofinterest.

These example front-end user interfaces may be generated by aJavaScript® widget that may be easily copied and pasted into theexisting code of a website. For example, an entity with in-depthknowledge of a wide variety of products may provide a JavaScript® widgetthat an e-commerce site operator may drop in place on their website. TheJavaScript® widget, while only a very short snippet of code itself, maylink to a much larger library of information and instructions maintainedby the entity (or another third party) for generating the productfinder, product builder, and so forth. In this way, the complexities ofmanaging, configuring, and maintaining a database and user interfaceelements may be removed from the e-commerce site, and, instead, may bemanaged by a central party. This approach allows for many smallere-commerce sites to enjoy the benefits of a robust, professional productbuilder or product finder while keeping overhead and website codecomplexity down. Essentially, the e-commerce site may abstract away thecomplexity of a highly functional electronic storefront through theJavaScript® widget.

A product finder builder may generate different JavaScript® productfinder widgets based on received inputs. For example, the product finderbuilder may generate a product finder widget tailored for a particularcustomer and their site-specific, data-specific, or other specificrequirements. The product finder builder may generate a widget of aspecific size or range of dimensions to fit within the e-commerce site'slayout, product set, price range, content filter, and so forth. Theproduct finder builder may be a command-line utility, a software packagewith a graphical user interface, a web interface that receives inputsand generates corresponding JavaScript® widget code for copying andpasting into the code of an existing e-Commerce site, or any othersuitable form.

FIG. 13 illustrates an exemplary method embodiment for building aproduct finder. A client, such as a website owner/developer or an onlineretailer, may want a product finder on a website to aid potentialcustomers and consumers, such as web surfers and online shoppers, infinding products and items of interest. The client may utilize a productfinder builder to develop a product finder. A method for building aproduct finder may include receiving a request 1302 (e.g., from aclient) at a product finder developer to develop a product finder, or tomodify an existing product finder. The product finder may be for one ormore specific products or product categories. In other words, therequest may be to develop a product finder configured to find a specificproduct or type of product. For example, a product finder may beconfigured to find televisions, smartphones, and so forth.

A client may have product information relating to a specific product(s)or product category(ies). The product information may include anidentifier for the products or categories. The client may provide theproduct information as input to the product finder builder. Input toconfigure the product finder may be received 1304 by a product finderdeveloper. For example, the input may include data such as the productname, brand name, manufacturer name, marketing description, technicalspecifications, images, videos, ratings, reviews, price, availability,and other product information.

FIG. 14 shows an exemplary product finder builder 1402. The systemembodiment for the product finder builder 1402 allows the client toinput e.g., type in, select, upload, or otherwise indicate variousproduct information, such as the product identifier(s) 1404, thebrand/manufacturer name 1406, the description/overview 1408, thefeatures/technical specifications 1410, pictures 1412, ratings/reviews1414, price 1416, shipping information 1418, and other information 1420.For an entire product category (e.g., cameras), the client may uploadfiles (e.g., a spreadsheet) for the product information instead ofthrough manual data entry methods. In an alternative embodiment, amaintainer of the product finder builder 1402 may provide a database ofinformation describing a set of products and/or services, from which auser may simply select products or indicate criteria by which the set ofproducts may be filtered to generate a list of products for use with theproduct finder. According to embodiments, the product finder builder1402 may be arranged in a modular configuration, wherein options (e.g.,user input 1204 options) may be specified in one or more customersettings (e.g., stored with customer information, such as a customeraccount 1007). For example, if a customer seeks to develop or modify aproduct finder, for instance, modifying a sequence of questions (e.g.,asking for price first, brand second, availability third), adding orremoving questions, changing a list of available options associated withcertain products or questions, then these features may be specified bycustomer settings removing the need for customized software development.

The client may not have any other product information relating to aproduct(s) or category(ies) other than a product identifier(s). Aproduct identifier may be, for example, a name of a product, a modelnumber of a product type, a serial number for a product, a name for aproduct type/category, a combination thereof, or any other elementcapable of identifying a product The client may input the productidentifier(s) to the product finder builder. The product finder buildermay communicate with a database having product information relating tothe product(s) or category(ies) corresponding to the productidentifier(s). The database may store product information for therequested product(s) or product category(ies) such as the product name,brand name, manufacturer name, product type, marketing description,technical specifications, price, availability, and other productinformation.

FIG. 15 shows an exemplary system embodiment for a product finderbuilder 1502 communicating with a product information database 1522. Ifthe client does not have any product information other than the productidentifier, the product finder builder 1502 may take the productidentifier 1504 specified by the client (e.g., “Product ABC”) andretrieve product information corresponding to “Product ABC” from thedatabase 1522. The product information may include, for example, theproduct identifier 1504, the brand/manufacturer name 1506, thedescription/overview 1508, the features/technical specifications 1510,pictures 1512, ratings/reviews 1514, price 1516, shipping information1518, and other information 1520. Similarly, the product finder buildermay retrieve the same or similar information for an entire productcategory (e.g., televisions).

Referring back to FIG. 13, using the received input, a system configuredto practice the exemplary method embodiment may develop 1306 the productfinder based on an existing template. The template may be stored in theproduct finder builder or the product information database. Building theproduct finder from an existing template obviates the need to writeand/or rewrite the computer code for the product finder. In other words,the template may already be set up for developing a product finder; thetemplate may receive product information as input to create or modifythe product finder using the received input 1306, thereby resulting in aproduct finder configured for finding the requested product(s) and/orcategory(ies).

For example, an online retailer of cameras may provide product dataincluding camera names, model numbers, descriptions, specifications, andprices, for a line of cameras being sold. The product finder builder mayreceive the data as input and create a product finder for the camerasbased on an existing product finder template and by incorporating thereceived data into the template. In other words, the template mayalready be configured to build the product finder's appearance,interface, functions, and the like, but may still require all of theproduct data. The retailer may provide the product data (e.g., directlyby inputting the data, or indirectly by providing a productidentifier(s) which correlates to product information in a database). Assuch, a product finder customized for the camera retailer (i.e., aproduct finder containing the product data entered for the requestedproduct/category) may be created with reduced time, effort, and cost. Ifthe online retailer sells tripods as well, the retailer may inputproduct information about tripods, and a product finder for tripods maybe developed based on the entered product information about tripodswithout having to completely recreate the product finder. The onlineretailer may repeat this for any other item or line of items as well. Asa result, much time, effort, and cost may be saved.

The product finder builder may monitor end user (e.g., website visitor,online shopper) behavior to obtain information, for example, to generatea decision tree to structure the product finder (and/or the template onwhich the product finder is based). For example, the product finderbuilder may monitor online shopper behavior and observe that mostshoppers select a price range first before selecting a brand. If so, theproduct finder builder may generate a decision tree for developing andstructuring the product finder such that, for example, it allows usersto select prices before brands.

Referring back to FIG. 13, the system configured to practice theexemplary method embodiment may grant access 1308 to the developedproduct finder. For example, when the product finder has been developed,the system configured to practice the exemplary method embodiment mayprovide the developed product finder to a client to implement on awebsite. As such, it is possible for a client website to include aproduct finder customized according to the client's needs (e.g., basedon the client's previous request and/or input), without the client orassociated web developer having to create the actual code for theproduct finder.

The method may grant access 1308 to the developed product finder byproviding a snippet of computer code. For example, the product finderbuilder may provide a snippet of JavaScript® computer code to theclient. The client may implement the snippet of code in a website togenerate a widget for finding products. As a result, without having tofocus on developing the actual computer code for generating the productfinder, the client's website may nonetheless feature a product finderwidget built and/or customized based on the client's previous input.

The product finder widget may provide access to a product finder thatresides or is hosted on a remote server. In other words, a developedproduct finder may reside on or be hosted by a remote server. Moreover,product finder development may occur on the remote server (e.g., by aproduct finder builder on the server). If so, the product finder widgeton the client's website may serve as an interface for accessing andusing the product finder on the remote server.

An exemplary embodiment including a widget for accessing a productfinder is illustrated in FIG. 16. The widget may be implemented on anywebsite such that when a webpage visitor moves or places a mouse pointerover a product identifier, for example, the widget may appear andprovide an interface for the product finder. Then via the widget, thevisitor may input selections to find a product of interest. The widgetmay be incorporated directly into the code of the website, such that thewidget appears to be seamlessly integrated with the website, even thoughthe widget may interact with external resources (e.g., code and data) ona different server. In this manner, the widget embedded within thewebsite may remain static, but the information served by the differentserver may be dynamic, based on inputs from the user to other parts ofthe website, and based on user profile or account information availableto the different server through the website.

FIG. 17 illustrates an exemplary embodiment including a widget foraccessing a product finder having retrieved results from a search query.The product finder may display the product(s) and the respective productinformation resulting from the visitor's selection(s). A sortingfunction may organize the results. The visitor may also choose tocompare a number of products and product information resulting from thequery.

With reference to FIG. 13 again, the system may optionally collect data1310 from the developed product finder for processing, aggregating,and/or analysis. For example, if the product finder is implemented as awidget on the client's website, then the product finder widget may sendqueries to a remote server when a website visitor uses the productfinder widget. As such, the system configured to practice the methodembodiment may collect data about the queries without additionalprocessing on the part of the client website. The query and anyinformation within the query may be aggregated, analyzed, and subjectedto further processing. For example, data regarding which productsvisitors tend to search for using the product finder can be beneficialfor sales, marketing, advertising, research, and other purposes.

The product finder builder may reside or be hosted on a remote server.The product finder builder and the product information database mayreside on or be hosted by the same server. In addition, the productfinder builder may include the database. The product finder builder andthe product information database may reside on or be hosted by differentservers.

The product finder builder may be an application and may be presented tothe client via a widget. The product finder builder may itself be awidget or it may be accessed through a widget. A product finder builderwidget may be hosted on a remote server. A widget may be hosted on theremote server along with the product finder builder, wherein the widgeton the remote server may provide an interface for accessing the productfinder builder.

For example, a client (e.g., online retailer, website owner/developer)desiring to implement a product finder on a website may access theremote server via the widget to use the product finder builder. Theclient may visit the remote server (e.g., a webpage of the remoteserver), request to develop a product finder, and interact with theproduct finder builder widget to input product information to develop aproduct finder customized for the client (i.e., based on his request andinput).

The product finder and/or the product finder builder may be generatedfrom computer code including JavaScript®, jQuery, HTML, HTML5, or anycombination of these and/or other programming languages. Widgets for theproduct finder and/or the product finder builder can be JavaScript®hooks and/or other script elements.

Embodiments disclosed herein may take the form of an entirely hardwareembodiment, an entirely software embodiment, or an embodiment containingboth hardware and software elements and modules. Software may include,but is not limited to, firmware, resident software, microcode, and thelike. Furthermore, embodiments may take the form of computer programproducts accessible from non-transitory computer-usable orcomputer-readable mediums providing program code for use by or inconnection with a computer or any instruction execution system.

A data processing system suitable for storing program code and forexecuting program code will include at least one processor, processorcircuits, or other processor resources, coupled directly or indirectlyto memory elements through a system bus, or chipset. The memory elementscan include local memory employed during actual execution of the programcode, bulk storage, and cache memories that provide temporary storage ofat least some program code in order to reduce the number of times codemust be retrieved from bulk storage during execution. Input/output orI/O devices (including, but not limited to, keyboards, displays,pointing devices, etc.) can be coupled to the system either directly orthrough intervening I/O controllers. Network adapters may also becoupled to the system to enable the data processing system to becomecoupled to other data processing systems or remote printers or storagedevices through intervening private or public networks. Modems, cablemodem and Ethernet cards are just a few of the currently available typesof network adapters.

For example, FIG. 18 illustrates an exemplary system 1800, and includesa general-purpose computing device 1800, including a processing unit(CPU, processor, or processor circuit) 1820 and a system bus 1810 thatcouples various system components including the system memory 1830 suchas read only memory (ROM) 1840 and random access memory (RAM) 1850 tothe processor 1820. The system 1800 can include a cache of high speedmemory connected directly with, in close proximity to, or integrated aspart of the processor 1820. The system 1800 copies data from the memory1830 and/or the storage device 1860 to the cache for quick access by theprocessor 1820. In this way, the cache provides a performance boost thatavoids processor 1820 delays while waiting for data. These and othermodules can control or be configured to control the processor 1820 toperform various actions. Other system memory 1830 may be available foruse as well. The memory 1830 can include multiple different types ofmemory with different performance characteristics. For example, thememory 1830 may include various types of computer-readable storage mediain the form of one or more higher speed memory units, such as read-onlymemory (ROM), random-access memory (RAM), dynamic RAM (DRAM),Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM(SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash memory, polymermemory such as ferroelectric polymer memory, ovonic memory, phase changeor ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS)memory, magnetic or optical cards, an array of devices such as RedundantArray of Independent Disks (RAID) drives, solid state memory devices(e.g., USB memory, solid state drives (SSD) and any other type ofstorage media suitable for storing information. In the illustratedembodiment shown in FIG. 18, the memory 1830 can include non-volatilememory and/or volatile memory.

It can be appreciated that the principles set forth herein may operateon a computing device 1800 with more than one processor 1820 or on agroup or cluster of computing devices networked together to providegreater processing capability. The processor 1820 can include anygeneral purpose processor and a hardware module or software module, suchas module 1 1862, module 2 1864, and module 3 1866 stored in storagedevice 1860, configured to control the processor 1820 as well as aspecial-purpose processor where software instructions are incorporatedinto the actual processor design. The processor 1820 may essentially bea completely self-contained computing system, containing multiple coresor processors, a bus, memory controller, cache, etc. A multi-coreprocessor may be symmetric or asymmetric.

The system bus 1810 may be any of several types of bus structuresincluding a memory bus or memory controller, a peripheral bus, and alocal bus using any of a variety of bus architectures. A basicinput/output (BIOS) stored in ROM 1840 or the like, may provide thebasic routine that helps to transfer information between elements withinthe computing device 1800, such as during start-up. The computing device1800 further includes various types of computer-readable storage media1860 such as a hard disk drive, a magnetic disk drive, an optical diskdrive, tape drive, or the like. The storage device 1860 can includesoftware modules 1862, 1864, 1866 for controlling the processor 1820.Other hardware or software modules are contemplated. The storage device1860 is connected to the system bus 1810 by a drive interface. Thedrives and the associated computer readable storage media providenonvolatile storage of computer readable instructions, data structures,program modules and other data for the computing device 1800. In oneaspect, a hardware module that performs a particular function includesthe software component stored in a non-transitory computer-readablemedium in connection with the necessary hardware components, such as theprocessor 1820, bus 1810, display 1870, and so forth, to carry out thefunction. The basic components are known to those of skill in the artand appropriate variations are contemplated depending on the type ofdevice, such as whether the device 1800 is a small, handheld computingdevice, a desktop computer, or a computer server.

Although the exemplary embodiment described herein employs the hard disk1860, it should be appreciated by those skilled in the art that othertypes of computer readable media which can store data that areaccessible by a computer, such as magnetic cassettes, flash memorycards, digital versatile disks, cartridges, random access memories(Rams) 1850, read only memory (ROM) 1840, a cable or wireless signalcontaining a bit stream, and the like, may also be used in the exemplaryoperating environment. Non-transitory computer-readable storage mediaexpressly exclude media such as energy, carrier signals, electromagneticwaves, and signals per se.

To enable user interaction with the computing device 1800, an inputdevice 1890 represents any number of input mechanisms, such as amicrophone for speech, a touch-sensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, speech, and so forth. An outputdevice 1870 can also be one or more of a number of output mechanismsknown to those of skill in the art. In some instances, multimodalsystems enable a user to provide multiple types of input to communicatewith the computing device 1800. The communications interface 1880generally governs and manages the user input and system output. There isno restriction on operating on any particular hardware arrangement andtherefore the basic features here may easily be substituted for improvedhardware or firmware arrangements as they are developed.

For clarity of explanation, the illustrative system embodiment of FIG.18 is presented as including individual functional blocks includingfunctional blocks labeled as a “processor” or processor 1820. Thefunctions these blocks represent may be provided through the use ofeither shared or dedicated hardware, including, but not limited to,hardware capable of executing software and hardware, such as a processor1820, that is purpose-built to operate as an equivalent to softwareexecuting on a general purpose processor. For example the functions ofone or more processors presented in FIG. 18 may be provided by a singleshared processor or multiple processors (use of the term “processor”should not be construed to refer exclusively to hardware capable ofexecuting software). Illustrative embodiments may include microprocessorand/or digital signal processor (DSP) hardware, read-only memory (ROM)1840 for storing software performing the operations discussed below, andrandom access memory (RAM) 1850 for storing results. Very large scaleintegration (VLSI) hardware embodiments, as well as custom VLSIcircuitry in combination with a general purpose DSP circuit, may also beprovided.

The logical operations of the various embodiments are implemented as:(1) a sequence of computer implemented steps, operations, or proceduresrunning on a programmable circuit within a general use computer, (2) asequence of computer implemented steps, operations, or proceduresrunning on a specific-use programmable circuit; and/or (3)interconnected machine modules or program engines within theprogrammable circuits. The system 1800 shown in FIG. 18 can practice allor part of the recited methods, can be a part of the recited systems,and/or can operate according to instructions in the recitednon-transitory computer-readable storage media. Such logical operationscan be implemented as modules configured to control the processor 1820to perform particular functions according to the programming of themodule. For example, FIG. 18 illustrates three modules Mod1 1862, Mod21864 and Mod3 1866 which are modules configured to control the processor1820. These modules may be stored on the storage device 1860 and loadedinto RAM 1850 or memory 1830 at runtime or may be stored as would beknown in the art in other computer-readable memory locations.

Other embodiments may also include tangible and/or non-transitorycomputer-readable storage media for carrying or havingcomputer-executable instructions or data structures stored thereon. Suchnon-transitory computer-readable storage media can be any availablemedia that can be accessed by a general purpose or special purposecomputer, including the functional design of any special purposeprocessor as discussed above. By way of example, and not limitation,such non-transitory computer-readable media can include RAM, ROM,EEPROM, CD-ROM or other optical disk storage, magnetic disk storage orother magnetic storage devices, or any other medium which can be used tocarry or store desired program code means in the form ofcomputer-executable instructions, data structures, or processor chipdesign. When information is transferred or provided over a network oranother communications connection (either hardwired, wireless, orcombination thereof) to a computer, the computer properly views theconnection as a computer-readable medium. Thus, any such connection isproperly termed a computer-readable medium. Combinations of the aboveshould also be included within the scope of the computer-readable media.

Computer-executable instructions include, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing device to perform a certain function orgroup of functions. Computer-executable instructions also includeprogram modules that are executed by computers in stand-alone or networkenvironments. Generally, program modules include routines, programs,components, data structures, objects, and the functions inherent in thedesign of special-purpose processors, etc. that perform particular tasksor implement particular abstract data types. Computer-executableinstructions, associated data structures, and program modules representexamples of the program code means for executing steps of the methodsdisclosed herein. The particular sequence of such executableinstructions or associated data structures represents examples ofcorresponding acts for implementing the functions described in suchsteps.

Those of skill in the art will appreciate that other embodiments may bepracticed in network computing environments with many types of computersystem configurations, including personal computers, hand-held devices,multi-processor systems, microprocessor-based or programmable consumerelectronics, network PCs, minicomputers, mainframe computers, and thelike. Embodiments may also be practiced in distributed computingenvironments where tasks are performed by local and remote processingdevices that are linked (either by hardwired links, wireless links, orby a combination thereof) through a communications network. In adistributed computing environment, program modules may be located inboth local and remote memory storage devices.

The various embodiments described above are provided by way ofillustration only and should not be construed to limit the scope of whatis set forth herein. For example, the principles herein can be used tohost many different types of information other than consumer electronicsproduct information, for example, information regarding sporting goods,cars, medicine, etc. Those skilled in the art will readily recognizevarious modifications and changes that may be made to the principlesdescribed herein without following the example embodiments andapplications illustrated and described herein, and without departingfrom the spirit and scope of the disclosures.

What is claimed is:
 1. A computer-implemented method comprising:displaying, on a user computing device, a product finder widget, whereinthe product finder widget corresponds to a specified product categoryhaving selectable attributes associated with products in the specifiedproduct category, the product finder widget being incorporated into athird party web page of a third party web server such that it appearsintegrated with the third party web page while being hosted by a webserver other than the third party web server and wherein the productfinder widget is configured to receive a selection of at least oneselectable attributes; receiving, by the product finder widget, aselection of at least one of the selectable attributes from a user;sending, by a computing device, a query including the at least one ofthe selectable attributes to an external product data service;receiving, by a computing device, product data describing productshaving the at least one of the selectable attributes; and displaying, bya computing device, information corresponding to the product data in theproduct finder widget.
 2. The method of claim 1, further comprisingcausing a map feature to be displayed and via the product finder widgetalong and wherein the product data comprises data relating to a productlocation.
 3. The method of claim 1, wherein the product finder widget isgenerated by code running in a web browser of the user device.
 4. Themethod of claim 1, wherein the product finder widget is displayed inresponse to a user interaction with the web page.
 5. The method of claim1, wherein the product is a digital media product.
 6. The method ofclaim 1, wherein the web page includes at least one of video content oraudio content.
 7. The method of claim 1, wherein the product datainclude at least one of a voucher, a coupon, or a ticket.
 8. The methodof claim 1, wherein the product data describes a product genus andfurther comprising receiving information representing a user selectionof at least one product in the product genus and transmitting morespecific information describing the at least one product.
 9. ANon-transitory computer readable media having instructions storedthereon, the instructions, when executed by one or more processors,cause at least one of the one or more processors to: cause to bedisplayed, on a user computing device, a product finder widget, whereinthe product finder widget corresponds to a specified product categoryhaving selectable attributes associated with products in the specifiedproduct category, the product finder widget being incorporated into athird party web page of a third party web server such that it appearsintegrated with the third party web page while being hosted by a webserver other than the third party web server and wherein the productfinder widget is configured to receive a selection of at least oneselectable attributes; receive, by the product finder widget, aselection of at least one of the selectable attributes from a user;send, by a computing device, a query including the at least one of theselectable attributes to an external product data service; receive, by acomputing device, product data describing products having the at leastone of the selectable attributes; and cause to be displayed, by acomputing device, information corresponding to the product data in theproduct finder widget.
 10. The media of claim 10, wherein theinstructions further cause the one or more processors to cause a mapfeature to be displayed and via the product finder widget along andwherein the product data comprises data relating to a product location.11. The media of claim 10, wherein the product finder widget isgenerated by code running in a web browser of a user device.
 12. Themedia of claim 10, wherein the product finder widget is displayed inresponse to a user interaction with the web page.
 13. The media of claim10, wherein the product is a digital media product.
 14. The media ofclaim 10, wherein the web page includes at least one of video content oraudio content.
 15. The media of claim 10, wherein the product datainclude at least one of a voucher, a coupon, or a ticket.
 16. The mediaof claim 10, wherein the product data describes a product genus and theinstructions further cause the one or more processors to receiveinformation representing a user selection of at least one product in theproduct genus and transmitting more specific information describing theat least one product.